The client/server computing model is a distributed computing model allowing a client process running on a client computer (a “client”), to delegate some of its work to a server process running on a server computer (a “server”). Distributed computer systems typically use multiple servers to provide essential functions to multiple users' clients in multiple concurrent user sessions. The use of multiple servers improves server availability and system capacity. It is often essential that distributed computer systems provide service on a continuously available, uninterrupted basis. However, distributed computer systems require periodic maintenance, including software upgrades.
FIG. 1 illustrates an exemplary distributed communications system 10 of the prior art. The system 10 includes three clients 12, 14, 16 connected to a communications network 18, e.g. the Internet or an intranet. Also connected to the communications network 18 is a server cluster 20 including application servers 22, 24 and 26. Each application server in the server cluster 20 stores an identical or nearly identical set of computer software programs and components thereof (collectively, “software”). Such software either enables a server to perform processes and/or interact with clients or is application software stored to be served to clients. An older version of such software is periodically replaced with a newer version providing new or more reliable functionality. This “upgraded” software must typically be installed on multiple servers in the distributed system.
In operation, individual clients use software applications stored on the application servers by sending data packets among one another via the communications network. Clients send messages, or “requests” for the software and receive response messages from the servers. Individual requests are part of a “session.” Application software starts and ends sessions. Since individual client's requests within a session may be routed to different application servers in the server cluster, some mechanism for sharing the session information is necessary. Various methods, both hardware and software based, are well known for sharing such information, including allowing access to shared memory or databases, and broadcasting session updates to all application servers in the cluster. For example, such information is typically stored in shared storage on an external data server 28.
Each application server maintains a list of active client sessions (the “Active Session List”) that it is currently supporting. Effectively, each entry in the Active Session List stores a unique session identification code (“session ID”) and associated session data for each client session. When an application server detects a new client session, it writes a new entry to the Active Session List. At the end of a request, associated session data is written to the client. Additionally, each application server stores information reflecting an active session count reflecting the number of active sessions being supported.
Preferably, such Active Session Lists from each application server are compiled into a Session List maintained in a shared storage area, such as at an external data server 28 for returning data to the clients, as is well known in the art. When a next request from the client is to be serviced by a different application server, that application server reads the session ID from the Session List. The basic execution model is: receive client request, load session data from the Session List, process request, return response, write session to Session List.
The application servers in the server cluster 20 are connected to the communications network 18 via a router 30. The router 30 and/or network routing layer functions in a well known manner, operating to distribute clients' requests among the multiple application servers.
A system management server 32 is connected to the router 30 and each of the applications servers. The system management server stores a mapping of applications/software programs to application servers (the “Server List”). This mapping information is accessed by the router to complete routing functions. The system management server provides configuration and health/load information to the router of the communications network 18.
There are several known architectures for distributed computer systems. One known example is the Java 2 Enterprise Edition specification of a client/server architecture (Java 2 Enterprise Edition™ is a trademark of Sun Microsystems, Inc.). The Java 2 Enterprise Edition™ specification allows server vendors to support seamless migration of all ongoing client sessions from a first server to a second server to permit the first server to be removed from the distributed computer system or by-passing an unscheduled server failure without aborting a pending client session. FIG. 2 shows an exemplary flow diagram 50 depicting the process of upgrading software in the distributing computing system of FIG. 1.
As shown in FIG. 2, the upgrade process begins with maintenance of the Session List and Server List, as shown at steps 51 and 52. There are many well known techniques for maintaining the Session List and Server List. Next, at step 54, an application server storing software to be upgraded is identified, e.g., Application Server 1. For example, the application server may be identified by reference to the Server List maintained in step 52.
The system management server 32 then forbids the router to route client requests to Application Server 1, as shown at step 56, thereby removing Application Server 1 from active service during the upgrade procedure. For example, the system management server 32 may send a signal to the router 30 with an appropriate message to cause the router 30 to stop sending new requests which could be serviced by the application server being upgraded. This may require an addition, deletion or modification to the Server List stored at the router and/or the system management server.
The system management server 32 then monitors whether the application server is currently supporting any active client requests, as shown at step 58. For example, the system management server may send an appropriate signal to the application server to determine if the active session count is 0. If the application server is still supporting active client requests (i.e., the active session count is greater than 0), the system management server waits or continues polling, as shown at step 60. This continues until the active session count drops to 0, indicating that the application server is no longer supporting any active client requests. Since the router will send no new requests to Application Server 1 and the current sessions have ended, Application Server 1 is effectively removed from the distributed computing system.
At this point, Application Server 1's software may be upgraded without disrupting any pending client requests. When the application server is no longer supporting any client requests, the appropriate software program on the appropriate application server is upgraded, as shown in step 62. Methods and computer hardware and software for upgrading software are well known in the art.
Once the upgrade is complete, the system management server 32 then permits the router 30 to route new client requests to the Application Server 1, as shown at step 64. This may be achieved by addition, deletion or modification of the Server List. For example, step 64 may be performed responsive to a signal sent from Application Server 1 to the system management server to indicate that the upgrade is complete. Finally, the method ends, as shown at step 65. In effect, the application server is added back to the distributed computing system.
Accordingly, prior art methods remove all of an application server's resources from a distributed computing system in order to update a single software application, which may constitute a small fraction of the application server's stored applications. Accordingly, the distributed computer system's burden is increased during a software upgrade process because the system must service client's requests with one fewer application server.